<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 把一个数组最开始的若干个元素搬到数组的末尾，我们称之为数组的旋转。
        // 输入一个非递减排序的数组的一个旋转，输出旋转数组的最小元素。
        // 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转，该数组的最小值为1。
        // NOTE：给出的所有元素都大于0，若数组大小为0，请返回0。
        let arr = [6501, 6828, 6963, 7036, 7422, 7674, 8146, 8468, 8704, 8717, 9170, 9359, 9719, 9895, 9896, 9913, 9962,
            154, 293, 334, 492, 1323, 1479, 1539, 1727, 1870, 1943, 2383, 2392, 2996, 3282, 3812, 3903, 4465, 4605,
            4665, 4772, 4828, 5142, 5437, 5448, 5668, 5706, 5725, 6300, 6335
        ]
        // 思路 使用二分查找

        function minNumberInRotateArray(rotateArray) {
            var len = rotateArray.length;
            if (len == 0 || !rotateArray) return 0;

            var low = 0;
            var high = len - 1;

            while (low < high) {
                var mid = low + Math.floor((high - low) / 2);

                if (rotateArray[mid] > rotateArray[high]) {
                    low = mid + 1;
                } else if (rotateArray[mid] == rotateArray[high]) {
                    high = high - 1;
                } else {
                    high = mid;
                }
            }
            return rotateArray[low];
        }
        minNumberInRotateArray(arr)
    </script>
</body>

</html>